package com.qf.controller;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.qf.entity.Order;
import com.qf.entity.OrderDTO;
import com.qf.service.OrderService;
import com.qf.util.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 订单表的控制层
 */
@RestController
@RequestMapping("/order")
public class OrderController {
    // 注入OrderService
    @Autowired
    private OrderService orderService;

    @GetMapping("/page")
    public R getOrderPage(OrderDTO orderDTO) {
        // 第一步：开启分页插件
        PageHelper.startPage(orderDTO.getPageNum(), orderDTO.getPageSize());

        // 第二步：查询所有订单列表
        List<Order> orderList =orderService.fuzzyQueryOrder(orderDTO);

        // 第三步：封装分页信息
        PageInfo<Order> pageInfo = new PageInfo<>(orderList);

        // 第四步：封装返回结果
        return R.ok(pageInfo);
    }

    /**
     * 添加订单
     * @param order 订单实体类
     * @return 添加结果
     */
    @PostMapping("/add")
    public R addOrder(@RequestBody Order order) {
        boolean result = orderService.addOrder(order);
        // 判断是否添加成功
        if (result) {
            return R.ok();
        }
        return R.fail();
    }

    /**
     * 根据id查询订单
     * @param id 订单id
     * @return 查询结果
     */
    @GetMapping("/{id}")
    public R getOrderById(@PathVariable Long id) {
        // Order order = orderService.getById(id);
        //
        // // 判断查询是否为空
        // if (order == null) {
        //     return R.fail();
        // }
        return R.ok();
    }

    /**
     * 根据id更新订单
     * @param order 订单实体类
     * @return 更新结果
     */
    @PostMapping("/update")
    public R updateOrder(@RequestBody Order order) {
        boolean result = orderService.updateOrder(order);
        // 判断是否更新成功
        if (result) {
            return R.ok();
        }
        return R.fail();
    }

    /**
     * 根据id删除订单-逻辑删除
     * @param id 订单id
     * @return 删除结果
     */
    @GetMapping("/deleteById")
    public R deleteOrder(Long id) {
        // 设置逻辑删除标志位
        boolean result = orderService.deleteOrderById(id);
        // 判断是否删除成功
        if (result) {
            return R.ok();
        }
        return R.fail();
    }

    /**
     * 根据id批量删除订单-逻辑删除
     * @param ids 订单id列表
     * @return 删除结果
     */
    @GetMapping("/deleteBatch")
    public R deleteBatchOrder(@RequestParam List<Long> ids) {
        // 设置逻辑删除标志位
        boolean result = orderService.deleteBatchOrderById(ids);
        // 判断是否删除成功
        if (result) {
            return R.ok();
        }
        return R.fail();
    }
}
